草庐IT

c++ - GLUT 和 C++ 类

全部标签

c++ - 将结构传递给 dll

我想将几个数据传递给Dll函数,所以我正在考虑创建一个结构并通过如下结构将它们传递给Dll函数:structoptions{intop1,intop2,intop3,char*op4,...char*op10}voiddllFunction(optionsmyOptions)无论开发工具是什么,dll都应该以在Windows平台上工作的方式实现,我想知道:这样发送数据有效吗?请注意,结构成员都是基本的c类型(int、float、double、...)。为什么我担心它?如您所知,不同的编译器以不同的方式实现std类,因此您不能通过dll边界传递std类,但我不确定是否所有编译器都以相同的

c++ - 如何编写用于从 C 访问 C++ 类成员的包装器(具有继承和构造函数)

在大多数问题中,我看到了一个没有构造函数、继承的简单类的包装器,只是调用了一个用于创建和销毁的void*以及一个foo函数。对于像下面这样的结构,应该如何创建一个包装器来从C代码访问类成员。myHeader.hforc++-------------------classchildA:publicparentA{private:voidlogger()override}classchildB:publicparentB{private:/*somemembers*/protected:/*somemembers*/public:explicitchildB(childA*a);}clas

c++ - 单元测试C时如何重置状态机

我有一套用于TI处理器的嵌入式C,需要进行单元测试。对于目标编译,使用了IAR,但我在使用MinGWGCC的Win7机器上运行测试。在C代码中,有些函数包含有时需要在测试之间重置的状态机。这些状态机通常将它们的状态变量保持在局部静态,即使不是不可能,也使该任务变得困难。我不是很精通C++类,但我有一个关于将C函数作为成员函数“导入”到包装C++类中的想法,这样就可以在需要重置时创建一个新对象。下面的代码不起作用,但它说明了我的想法。在main.cpp中:#include"statemachine.h"usingnamespacestd;classstateMachineWrapper{

c++ - 从 C/C++ 调用 Scala 代码

如果我有一个包含已编译scala方法的.jar文件,是否有任何方法可以从C/C++dll调用它?我怎样才能做到这一点?我只能找到相反的信息。 最佳答案 Scala程序(一旦编译)是一个Java类。所以请遵循这个建议:HowtoaccesstheJavamethodinaC++application 关于c++-从C/C++调用Scala代码,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c++ - 从零开始的 Lua/C++ 绑定(bind)

我是Lua的新手,正在尝试了解一些基础知识。我想了解的是将Lua绑定(bind)到C++实例。我对第三方库不感兴趣,我想在更基础的层面上理解这一点-谢谢:)这是我的问题:根据我所阅读的内容,我的假设是Lua只能绑定(bind)到静态C函数。这是正确的吗?这是否意味着要绑定(bind)C++类的实例,我首先需要为我想要的每个方法和属性getter/setter编写静态函数,并接受实例指针作为参数。我会在Lua中注册这些函数。我会向Lua传递一个指向C++类实例的指针。我会从Lua调用其中一个注册函数,传递C++实例指针。静态函数取消引用指针,调用等效方法。这有意义吗?还是我弄错了什么?感

c++ - 通过 RS232 串行端口从条码扫描器读取异步数据

我有一个条形码阅读器,它通过RS232串行端口连接到PC。我正在编写一个C++代码来向条形码扫描器发送命令并将响应返回给PC。目前程序可以正确发送数据到设备,但无法读取条码扫描器的响应。在这种情况下,一旦我们向条形码阅读器发送命令,它就会以肯定或否定的确认回应。e.g:-SendBEEPcommand.1.Host(PC)sendaBEEPcommandtobarcodescanner2.Barcodescannermakeabeepsoundandsendtheacknowledgementbacktohost(PC)3.Host(PC)readtheacknowledgement在

c++ - 如何找到 `FILE*`的相对地址

要了解我为什么要做下面描述的事情,您可以阅读this题。简而言之:由于某种原因,库代码请求了一个未由相应类定义的函数,我的解决方案:通过我的自定义类扩展类,编写请求的函数并使用我的类。我有一个函数void*advance(uint64_tnbytes)会被一些库代码调用为memcpy(object.advance(nbytes),source,nbytes)。从advance()内部,我可以访问一个FILE*应该存储结果的地方,所以据我所知,我必须返回一个指针,该指针将具有相对地址到整个内存,但在FILE*中,以便库代码可以适本地编写。到目前为止我已经尝试过:void*advance(

c++ - extern是否破坏封装

我是C++的新手,我正在创建游戏。我有一个名为main的类,我在其中声明Game*game;//globallyintmain(){game=newGame();game->show();}我的类游戏启动我的游戏等。现在在其他类(玩家、敌人等)中,我使用游戏访问变量,例如玩家健康#includeexternGame*game;func::func(){game->health->resetHealth();}这是否打破了封装/ood范式?这是不好的做法吗?问题是我可以看到任何其他为游戏做这件事的方法。 最佳答案 是的,extern破

c++ - 如何对 WAV 文件数据执行 FFT?

我正在尝试通过检测存在的最高频率来分析文件的音频质量(压缩音频通常会被过滤到低于20KHz的频率)。我正在使用soundstretch库中的一个类读取WAV文件数据,该类将PCM样本作为float返回,然后使用fftw3库对这些样本执行FFT。然后对于每个频率(四舍五入到最接近的KHz),我将计算该频率的振幅。因此对于不包含高于16KHz频率的低质量文件,我希望在16KHz以上没有或只有很小的幅度,但是我没有得到我期望的结果。下面是我的代码:#include#include#include#include#include"include/WavFile.h"usingnamespace

c++ - 在 C++ (Vulkan) 中处理 C 代码

我正在尝试使用基于Vulkan的C++编写渲染引擎。Vulkan是用C语言编写的,因此它有一些有趣的约定。我在Vulkan应用程序的教程/代码片段中看到的一个反复出现的模式是,大多数代码都在一个非常大的类中。(现在我的vulkan类也已经有大约2000行)。但是为了制作一个合适的渲染引擎,我需要将我的代码划分到一定程度。前面提到的一个有趣的地方是它有一个叫做逻辑设备的东西,它是对显卡的抽象引用。它无处不在,以下列方式创建和分配事物:使用创建信息创建结构创建代码将输出到的变量调用实际的vkCreateSomething或vkAllocateSomething函数,传入逻辑设备,创建信息和